{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import os\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.svm import SVC\n",
    "from sklearn import datasets\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "data=pd.read_table(\"./testSetRBF.txt\",header=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.214824</td>\n",
       "      <td>0.662756</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.061569</td>\n",
       "      <td>-0.091875</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.406933</td>\n",
       "      <td>0.648055</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.223650</td>\n",
       "      <td>0.130142</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.231317</td>\n",
       "      <td>0.766906</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>0.601559</td>\n",
       "      <td>-0.727041</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>-0.791603</td>\n",
       "      <td>0.095651</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>-0.908298</td>\n",
       "      <td>-0.053376</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>0.122020</td>\n",
       "      <td>0.850966</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>-0.725568</td>\n",
       "      <td>-0.292022</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           0         1    2\n",
       "0  -0.214824  0.662756 -1.0\n",
       "1  -0.061569 -0.091875  1.0\n",
       "2   0.406933  0.648055 -1.0\n",
       "3   0.223650  0.130142  1.0\n",
       "4   0.231317  0.766906 -1.0\n",
       "..       ...       ...  ...\n",
       "95  0.601559 -0.727041 -1.0\n",
       "96 -0.791603  0.095651 -1.0\n",
       "97 -0.908298 -0.053376 -1.0\n",
       "98  0.122020  0.850966 -1.0\n",
       "99 -0.725568 -0.292022 -1.0\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f0e9f3aa1d0>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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e++9Hm2OHTuGSZMmISkpCX379sWjjz6KixcvKtmVoITa36amJsybNw+DBw9G9+7d8aMf/QgPPPAAbDabRzuZ3uPVq1ejX79+SExMRE5ODqqqqvy237JlC4YMGYLExEQMHz4c7777rsfzwfxNx1Io/S0rK8NPf/pT9OrVC7169UJeXl6n9jNnzuz0XhYUFCjdjaCF0t8NGzZ06ktiYqJHG9nfXyC0Pnv7fDIYDJg0aZK7jczv8YcffojbbrsN6enpMBgMeOuttwK+ZteuXRg9ejSMRiMGDRqEDRs2dGoT6udCJ0KjFi9eLJ5++mlRXFwszGZzUK9ZuXKlMJvN4q233hKfffaZ+MUvfiH69+8vvv/+e3ebgoICMXLkSLF7927xf//3f2LQoEFi2rRpCvUieKGe18WLF0V9fb3H19KlS8Xll18uzpw5424HQKxfv96j3aU/j1gK570YP368KCoq8uiPzWZzP3/x4kUxbNgwkZeXJ/bv3y/effddkZKSIkpKSpTuTkCh9veLL74Qv/zlL8Xbb78tjhw5IioqKsQ111wjbr/9do92srzHmzdvFgkJCWLdunXi4MGDoqioSCQnJ4uGhgav7T/++GMRHx8vnnzySXHo0CHx+OOPi27duokvvvjC3SaYv+lYCbW/d9xxh1i9erXYv3+/qKmpETNnzhRms1kcP37c3WbGjBmioKDA471samqKVpf8CrW/69evFyaTyaMvVqvVo43M768Qofe5sbHRo78HDhwQ8fHxYv369e42Mr/H7777rvif//kf8cYbbwgA4s033/Tb/p///KdISkoSxcXF4tChQ+IPf/iDiI+PF+Xl5e42of4MvdFsoOOyfv36oAIdp9MpLBaLeOqpp9yPNTc3C6PRKF599VUhhBCHDh0SAMQnn3zibvPee+8Jg8EgTpw4EfFzD1akzisrK0v813/9l8djwfyyxkK4fR4/frx48MEHfT7/7rvviri4OI8P1BdeeEGYTCbR1tYWkXMPR6Te47/85S8iISFBXLhwwf2YLO9xdna2uP/++93/djgcIj09XaxYscJr+//8z/8UkyZN8ngsJydH/Pd//7cQIri/6VgKtb8dXbx4UfTs2VNs3LjR/diMGTPE5MmTI32qERFqfwN9dsv+/grR9ff497//vejZs6doaWlxPybze3ypYD5XHnvsMfHjH//Y47Gp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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x= data.iloc[:,0].values\n",
    "y= data.iloc[:,1].values\n",
    "plt.scatter(x,y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kernelTrans(X,A,kTup):\n",
    "    m,n = shape(X)\n",
    "    K= mat(zeros((m,1)))\n",
    "    if kTup[0]=='lin':\n",
    "        K = X * A.T   #linear kernel\n",
    "    elif kTup[0]=='rbf':\n",
    "        for j in range(m):\n",
    "            deltaRow= X[j,:] - A\n",
    "            K[j] = deltaRow*deltaRow.T\n",
    "        K = exp(K/(-1*kTup[1]**2)) #gamma is in fact rbf_gamma\n",
    "    else: raise NameError('%s is not a valid kernel type'%kTup[0])\n",
    "    return K\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
